# Scala - ✯✯

Материалы отсортированы по версии Scala (Scala 3/Scala 2), языку (русский/english), а затем - по алфавиту.

## Книги и документация

| Название                                                                                                                                                  | Версия  | Язык | Дата | Комментарий |
|-----------------------------------------------------------------------------------------------------------------------------------------------------------|:-------:|:----:|------|-------------|
| [Programming Scala, 3rd Edition by Dean Wampler](https://deanwampler.github.io/books/programmingscala.html)                                               | Scala 3 |  En  | 2021 |             |
| [Refinement types for Scala](https://github.com/fthomas/refined)                                                                                          | Scala 3 |  En  |      | Refined     |
| [Functional and Reactive Domain Modeling by Debasish Ghosh](https://www.manning.com/books/functional-and-reactive-domain-modeling)                        | Scala 2 |  En  | 2016 |             |
| [Hands-on Scala Programming by Li Haoyi](https://www.handsonscala.com/)                                                                                   | Scala 2 |  En  | 2020 |             |
| [Pure functional HTTP APIs in Scala by Jens Grassel](https://leanpub.com/pfhais)                                                                          | Scala 2 |  En  | 2022 |             |
| [Scala & Design Patterns: Exploring Language Expressivity by Frederik Skeel Løkke](https://www.scala-lang.org/old/sites/default/files/FrederikThesis.pdf) | Scala 2 |  En  | 2009 |             |
| [Scala with Cats](https://www.scalawithcats.com/)                                                                                                         | Scala 2 |  En  | 2020 | Cats        |

## Курсы

| Название                                                                                                                          |  Версия  | Язык | Дата | Комментарий |
|-----------------------------------------------------------------------------------------------------------------------------------|:--------:|:----:|------|-------------|
| [Functional Programming in Scala - 4 Big Data Analysis with Scala and Spark](https://www.coursera.org/learn/scala-spark-big-data) | Scala 3  |  En  | 2021 | Spark       |
| [Functional Programming in Scala - 5 Functional Programming in Scala Capstone](https://www.coursera.org/learn/scala-capstone)     | Scala 3  |  En  | 2021 |             |
| [Scala - продвинутый уровень](https://stepik.org/course/92864/promo)                                                              | Scala 2  |  Ру  | 2021 |             |
| [Pure Functional HTTP APIs in Scala](https://www.educative.io/courses/pure-functional-http-apis-scala)                            | Scala 2  |  En  | 2022 |             |

## Упражнения

| Название                                                                                                                                  |  Версия  | Язык | Дата | Комментарий |
|-------------------------------------------------------------------------------------------------------------------------------------------|:--------:|:----:|------|-------------|
| [Learn Functional Programming course/tutorial on Scala](https://github.com/dehun/learn-fp)                                                | Scala 2  |  En  | 2017 |             |
| [Scala puzzlers](https://scalapuzzlers.com/index.html), на основе упражнений [написана книга](https://www.artima.com/shop/scala_puzzlers) | Scala 2  |  En  | 2014 |             |
| [Scalacaster](https://github.com/vkostyukov/scalacaster/tree/master)                                                                      | Scala 2  |  En  | 2018 |             |
| [Scalgos](https://github.com/pathikrit/scalgos/tree/master)                                                                               | Scala 2  |  En  | 2015 |             |

## Статьи

| Название                                                                                                                                                                                 | Версия  | Язык | Дата | Комментарий      |
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-------:|:----:|------|------------------|
| [API Design for Heaps (aka Priority Queues)](https://typelevel.org/blog/2016/11/17/heaps.html)                                                                                           |  Scala  |  En  | 2016 | Структуры данных |
| [Automatically Deriving Typeclass Instances in Scala 3](https://xebia.com/blog/automatically-deriving-typeclass-instances-in-scala-3/)                                                   | Scala 3 |  En  | 2021 |                  |
| [Cats Effect 3 - Introduction to Fibers](https://blog.rockthejvm.com/cats-effect-fibers/)                                                                                                | Scala 3 |  En  | 2021 | Cats effect      |
| [Cats Effect vs ZIO](https://softwaremill.com/cats-effect-vs-zio/)                                                                                                                       | Scala 3 |  En  | 2023 | Cats effect, ZIO |
| [Concurrency with Cats Effect](https://softwaremill.com/concurrency-with-cats-effect)                                                                                                    | Scala 3 |  En  | 2023 | Cats effect      |
| [Controllable Futures in Scala - Rock the JVM](https://blog.rockthejvm.com/controllable-futures/)                                                                                        | Scala 3 |  En  | 2020 |                  |
| [Deploy http4s on your domain with fly.io](https://toniogela.dev/http4s-on-fly-io/)                                                                                                      | Scala 3 |  En  | 2023 |                  |
| [Functional Programming anti-patterns in Scala](https://scalajobs.com/blog/functional-programming-anti-patterns-in-scala)                                                                | Scala 3 |  En  | 2023 | Patterns         |
| [Scala 3: Error handling in FP land](https://gvolpe.com/blog/error-handling-scala3/)                                                                                                     | Scala 3 |  En  | 2022 |                  |
| [Time traveling in tests with Cats Effect](https://blog.softwaremill.com/time-traveling-in-tests-with-cats-effect-b22084f6a89)                                                           | Scala 3 |  En  | 2020 | Cats effect      |
| [Type Classes](https://typelevel.org/cats/typeclasses.html)                                                                                                                              | Scala 3 |  En  |      |                  |
| [What is an Effect?](https://www.inner-product.com/posts/what-is-an-effect/)                                                                                                             | Scala 3 |  En  | 2020 | Cats effect      |
| [A simple trick to improve type safety of your Scala code](https://blog.softwaremill.com/a-simple-trick-to-improve-type-safety-of-your-scala-code-ba80559ca092)                          | Scala 2 |  En  | 2020 | Refined          |
| [Algebraic API Design - Types, Functions, Properties](https://typelevel.org/blog/2019/02/06/algebraic-api-design.html)                                                                   | Scala 2 |  En  | 2019 |                  |
| [Cats Concurrency basics with Ref and Deferred](https://blog.softwaremill.com/cats-concurrency-basics-with-ref-and-deferred-399e0335630)                                                 | Scala 2 |  En  | 2020 | Cats effect      |
| [Compile time dimensional analysis with Libra](https://typelevel.org/blog/2017/06/13/libra.html)                                                                                         | Scala 2 |  En  | 2017 |                  |
| [Deriving Type Class Instances](https://typelevel.org/blog/2013/06/24/deriving-instances-1.html)                                                                                         | Scala 2 |  En  | 2013 |                  |
| [Equivalence versus Equality](https://typelevel.org/blog/2017/04/02/equivalence-vs-equality.html)                                                                                        | Scala 2 |  En  | 2017 |                  |
| [Higher-Kinded Data in Scala](https://xebia.com/blog/higher-kinded-data-in-scala/)                                                                                                       | Scala 2 |  En  | 2023 |                  |
| [Higher-kinded types: the difference between giving up, and moving forward](https://typelevel.org/blog/2016/08/21/hkts-moving-forward.html)                                              | Scala 2 |  En  | 2016 |                  |
| [How we used Refined to improve type safety and error reporting in Scala](https://engineering.contentsquare.com/2021/scala-refined-types/)                                               | Scala 2 |  En  | 2021 | Refined          |
| [Introduction to Programming with ZIO Functional Effects](https://scalac.io/blog/introduction-to-programming-with-zio-functional-effects)                                                | Scala 2 |  En  | 2021 | ZIO              |
| [JVM Multithreading: Monitor Locks and Visibility](https://alexn.org/blog/2013/03/14/jvm-multithreading-monitor-locks-visibility/)                                                       | Scala 2 |  En  | 2013 |                  |
| [Lightweight Non-Negative Numerics for Better Scala Type Signatures](http://erikerlandson.github.io/blog/2015/08/18/lightweight-non-negative-numerics-for-better-scala-type-signatures/) | Scala 2 |  En  | 2015 | Refined          |
| [ProvingGround: Automated Theorem proving by learning](http://siddhartha-gadgil.github.io/ProvingGround/index.html)                                                                      | Scala 2 |  En  | 2020 |                  |
| [Refined types, what are they good for?](https://beyondthelines.net/programming/refined-types/)                                                                                          | Scala 2 |  En  | 2017 | Refined          |
| [Refinement Types In Practice](https://kwark.github.io/refined-in-practice-bescala/#117)                                                                                                 | Scala 2 |  En  | 2018 | Refined          |
| [Refined Types in Scala](https://blog.rockthejvm.com/refined-types/)                                                                                                                     | Scala 2 |  En  | 2020 | Refined          |
| [Refined Types in Scala: the Good, the Bad and the Ugly](https://medium.com/swlh/refined-types-the-good-the-bad-and-the-ugly-ee971e5d9137)                                               | Scala 2 |  En  | 2020 | Refined          |
| [Refining your data from configuration to database](https://underscore.io/blog/posts/2017/03/07/refined-data-config-database.html)                                                       | Scala 2 |  En  | 2017 | Refined          |
| [Retry Failing Tasks with Cats and Scala - Alexandru Nedelcu](https://alexn.org/blog/2020/08/03/on-error-retry-loop)                                                                     | Scala 2 |  En  | 2020 | Cats             |
| [Safe, Expressive Code with Refinement Types](https://tech.ovoenergy.com/safe-expressive-code-with-refinement-types/)                                                                    | Scala 2 |  En  | 2020 | Refined          |
| [Shared State in Functional Programming](https://typelevel.org/blog/2018/06/07/shared-state-in-fp.html)                                                                                  | Scala 2 |  En  | 2018 |                  |
| [Scala's isInstanceOf is an Anti-Pattern - Alexandru Nedelcu](https://alexn.org/blog/2019/08/11/isinstanceof-anti-pattern)                                                               | Scala 2 |  En  | 2019 |                  |
| [Stackless Scala With Free Monads - Runar Oli Bjarnason](https://blog.higher-order.com/assets/trampolines.pdf)                                                                           | Scala 2 |  En  | 2012 | Trampoline       |
| [Subtype type classes don't work](https://typelevel.org/blog/2016/09/30/subtype-typeclasses.html)                                                                                        | Scala 2 |  En  | 2016 |                  |
| [Tests - can we have too many?](https://github.com/wjlow/blog/blob/3c27de716b40660801e68561252883fd0428395e/Tests.md)                                                                    | Scala 2 |  En  | 2018 | Refined          |
| [There are more types than classes](https://typelevel.org/blog/2017/02/13/more-types-than-classes.html)                                                                                  | Scala 2 |  En  | 2017 |                  |
| [Type-Level Programming in Scala](https://apocalisp.wordpress.com/2010/06/08/type-level-programming-in-scala/)                                                                           | Scala 2 |  En  | 2010 |                  |
| [Type safety with refined](https://blog.michalp.net/posts/scala/refined/)                                                                                                                | Scala 2 |  En  | 2022 | Refined          |
| [Validate Service Configuration in Scala](https://medium.com/se-notes-by-alexey-novakov/validate-service-configuration-in-scala-85f661c4b5a6)                                            | Scala 2 |  En  | 2019 | Refined          |
| [Wtf is Refined?](https://medium.com/@Methrat0n/wtf-is-refined-5008eb233194)                                                                                                             | Scala 2 |  En  | 2019 | Refined          |

## Видео

| Название                                                                                                                                                                 | Версия  | Язык | Дата | Комментарий            |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:-------:|:----:|------|------------------------|
| [Современное ФП с Tagless Final - Олег Нижников](https://www.youtube.com/watch?v=sWEtnq0ReZA)                                                                            |  Scala  |  Ру  | 2023 |                        |
| [О дивный контекстный мир Scala - Иван Лягаев](https://www.youtube.com/watch?v=fR0hj-Lz1Vc)                                                                              | Scala 2 |  Ру  | 2023 |                        |                                                         
| [Direct Style Scala - Martin Odersky, Scalar Conference 2023](https://www.youtube.com/watch?v=0Fm0y4K4YO8&t)                                                             | Scala 3 |  En  | 2023 | Scalar Conference 2023 |
| [Intro to the Scala 3 Type System - Bill Venners](https://www.youtube.com/watch?app=desktop&v=vuTFg5g_f6w)                                                               | Scala 3 |  En  | 2023 |                        |
| [Combining Refined Types with Type Class Derivation in Scala - Lawrence Carvalho](https://www.youtube.com/watch?v=Hq2QWbUXKbE&t)                                         | Scala 2 |  En  | 2018 | Refined                |
| [Decorate your types with refined – Frank Thomas](https://www.youtube.com/watch?v=zExb9x3fzKs)                                                                           | Scala 2 |  En  | 2016 | Refined                |
| [Defusing the configuration time bomb with PureConfig and Refined - Leif Wickland](https://www.youtube.com/watch?v=NjqRi-cF3-g)                                          | Scala 2 |  En  | 2017 | Refined                |
| [Functional Structures in Scala - Michael Pilquist](https://www.youtube.com/playlist?list=PLFrwDVdSrYE6dy14XCmUtRAJuhCxuzJp0)                                            | Scala 2 |  En  | 2015 | FP                     |
| [Getting Started with #refined - DevInsideYou](https://www.youtube.com/watch?v=aZsmapo1afQ)                                                                              | Scala 2 |  En  | 2020 | Refined                |
| [How to Build a Functional API - Julien Truffaut](https://www.youtube.com/watch?v=__zuECMFCRc)                                                                           | Scala 2 |  En  | 2018 | FP                     |
| [Let The Compiler Help You: How To Make The Most Of Scala's Typesystem - Markus Hauck](https://www.youtube.com/watch?v=hhXPeuJohM4)                                      | Scala 2 |  En  | 2017 | Refined                |
| [Literal types, what they are good for? - Tamer Abdulradi](https://slideslive.com/38907881/literal-types-what-they-are-good-for)                                         | Scala 2 |  En  | 2018 | Refined                |
| [Refined Types in Scala - Rock the JVM](https://www.youtube.com/watch?v=IDrGbsupaok)                                                                                     | Scala 2 |  En  | 2020 | Refined                |
| [Security with Scala: Refined Types and Object Capabilities - Will Sargent](https://slideslive.com/38908776/security-with-scala-refined-types-and-object-capabilities)   | Scala 2 |  En  | 2018 | Refined                |
| [Strings are Evil: Methods to hide the use of primitive types - Noel Welsh](https://slideslive.com/38908213/strings-are-evil-methods-to-hide-the-use-of-primitive-types) | Scala 2 |  En  | 2018 | Refined                |
| [Why types matter](https://www.youtube.com/watch?v=n1Y2V4zCZdQ)                                                                                                          | Scala 2 |  En  | 2020 | Refined                |
